package model;

import java.io.Serializable;
import java.util.List;

import javax.enterprise.event.Event;
import javax.inject.Inject;

import lombok.Getter;
import qualifiers.Nacional;
import stereotypes.MeusFeijao;
import calculadoras.CalculadoraFrete;

import com.google.common.collect.Lists;

@MeusFeijao
public class Venda implements Serializable{

	private static final long serialVersionUID = 1L;
	
	@Getter
	private double valorFrete;
	
	@Getter
	private final List<ItensVenda> itens;
	
	@Inject
	Event<Venda> eventoVendaFinalizada;
	
	@Inject @Nacional
	private CalculadoraFrete calculadora;

	//@Inject @Any
	//private Instance<CalculadoraFrete> calculadoraLazy;

	public Venda() {
		itens = Lists.newArrayList();
		valorFrete = 0;
		itens.add(new ItensVenda(new Produto("Livro CDI - Integre as dependências e contextos do seu código Java",0.2), 2));
		itens.add(new ItensVenda(new Produto("Java Persistence with Hibernate",	0.8), 4));
		itens.add(new ItensVenda(new Produto("Core JAVASERVER FACES", 0.6), 4));
	}


	public void calculaFrete(){
		
		//CalculadoraFrete calculadora = calculadoraLazy.select(new AnnotationLiteral<Nacional>() {}).get();
		
		valorFrete = calculadora.valorFrete(itens);;
		System.out.println("Calculando");
	}
	
	public void finalizaVenda(){
		eventoVendaFinalizada.fire(this);
	}
	
}
